|
RAIS
3.2
|
00001 using System; 00002 using System.Collections.Generic; 00003 using System.Text; 00004 using NUnit.Framework; 00005 using RAIS.Common.Localization; 00006 using RAIS.DataAccessLayer; 00007 using Cultures = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.Culture>; 00008 using Contexts = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.Context>; 00009 using TranslationItems = System.Collections.Generic.Dictionary<string, RAIS.Common.Localization.TranslationItem>; 00010 00011 namespace RAIS.DataAccessLayerTest 00012 { 00013 [TestFixture] 00014 public class LocalizationTest 00015 { 00016 #region Properties 00017 [Test] 00018 public void Cultures() 00019 { 00020 // Clear DB 00021 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00022 00023 // Preparations 00024 int expectedCount = 3; 00025 bool returnStatus; 00026 string errorMessage = ""; 00027 00028 Culture[] expectedCultures = new Culture[expectedCount]; 00029 for (int i = 1; i <= expectedCount; i++) 00030 { 00031 expectedCultures[i - 1] = new Culture(i); 00032 returnStatus = Localisation.AddCulture(expectedCultures[i - 1], ref errorMessage); 00033 if (!returnStatus) 00034 throw new Exception("Add culture error"); 00035 } 00036 00037 // Test 00038 Cultures checkCultures = Localisation.SupportedLanguages; 00039 00040 // Checks 00041 for (int i = 1; i <= expectedCount; i++) 00042 Assert.AreEqual(expectedCultures[i - 1].EnglishName, checkCultures[expectedCultures[i - 1].Name].EnglishName); 00043 00044 // Restore to previous state 00045 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00046 } 00047 [Test] 00048 public void Contexts() 00049 { 00050 // Clear DB 00051 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00052 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00053 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00054 00055 // Preparations 00056 string[] expectedContexts = { "Context 1", "Context 2", "Context 3" }; 00057 int expectedCount = expectedContexts.Length; 00058 Culture sourceCulture = TestUtilities.NewTestCultureWithSave(1); 00059 Culture targetCulture = TestUtilities.NewTestCultureWithSave(2); 00060 00061 for (int i = 0; i < expectedCount; i++) 00062 // usp_GetTranslation stored procedure adds new culture and row in Translation table 00063 // if it does not find the translation and return empty recordset. 00064 // Translate method throw an exception "... can not be translated" in this case 00065 // We need to add new cultures in this test, so, ignore the exception 00066 try 00067 { 00068 Localisation.Translate(expectedContexts[i], "Add", sourceCulture.Name, targetCulture.Name); 00069 } 00070 catch 00071 { 00072 } 00073 00074 // Test 00075 Contexts checkContexts = Localisation.Contexts; 00076 00077 // Checks 00078 for (int i = 0; i < expectedCount; i++) 00079 Assert.AreEqual(expectedContexts[i], checkContexts[expectedContexts[i]].Name); 00080 00081 // Restore to previous state 00082 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00083 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00084 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00085 } 00086 #endregion 00087 00088 #region Methods 00089 [Test] 00090 public void Translate() 00091 { 00092 /*// Clear DB 00093 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00094 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00095 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00096 00097 // Preparations 00098 string errorMessage = ""; 00099 string expectedContext = "Context 1"; 00100 Culture sourceLanguage = Localisation.SupportedLanguages["English"]; 00101 Culture targetLanguage = TestUtilities.NewTestCultureWithSave(1); 00102 string testTranslation = "Test Translation"; 00103 string expectedTranslationResult = "Expected Translation Result"; 00104 //Add new culture 00105 try 00106 { 00107 Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name); 00108 00109 } 00110 catch 00111 { 00112 } 00113 Context culture = Localisation.Contexts[expectedContext]; 00114 TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceLanguage, targetLanguage, true); 00115 translationItems[expectedContext + " " + testTranslation].TargetText = expectedTranslationResult; 00116 Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error"); 00117 00118 // Test 00119 string checkTranslation = Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name); 00120 00121 // Check 00122 Assert.AreEqual(expectedTranslationResult, checkTranslation); 00123 00124 // Restore to previous state 00125 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00126 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00127 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/ 00128 } 00129 [Test] 00130 public void AddCulture() 00131 { 00132 // Clear DB 00133 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00134 00135 // Preparations 00136 int expectedLCID = 1; 00137 bool returnStatus; 00138 string errorMessage = ""; 00139 00140 Culture expectedCulture = new Culture(expectedLCID); 00141 00142 // Test 00143 returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage); 00144 00145 // Checks 00146 Assert.IsTrue(returnStatus, "AddCulture return status:"); 00147 00148 Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name]; 00149 00150 Assert.AreEqual(expectedCulture.ID, checkCulture.ID); 00151 Assert.AreEqual(expectedCulture.Name, checkCulture.Name); 00152 Assert.AreEqual(expectedCulture.LCID, checkCulture.LCID); 00153 Assert.AreEqual(expectedCulture.EnglishName, checkCulture.EnglishName); 00154 Assert.AreEqual(expectedCulture.RightToLeft, checkCulture.RightToLeft); 00155 00156 // Restore to previous state 00157 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00158 } 00159 [Test] 00160 public void SaveCulture() 00161 { 00162 // Clear DB 00163 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00164 00165 // Preparations 00166 int expectedLCID = 1; 00167 bool returnStatus; 00168 string errorMessage = ""; 00169 00170 Culture expectedCulture = new Culture(expectedLCID); 00171 returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage); 00172 if (!returnStatus) 00173 throw new Exception("Add culture error"); 00174 00175 expectedCulture.RightToLeft = true; 00176 00177 // Test 00178 returnStatus = Localisation.SaveCulture(expectedCulture, ref errorMessage); 00179 00180 // Checks 00181 Assert.IsTrue(returnStatus, "AddCulture return status:"); 00182 00183 Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name]; 00184 00185 Assert.AreEqual(expectedCulture.RightToLeft, checkCulture.RightToLeft); 00186 00187 // Restore to previous state 00188 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00189 } 00190 [Test] 00191 [ExpectedException(typeof(System.Collections.Generic.KeyNotFoundException))] 00192 public void DeleteCulture() 00193 { 00194 // Clear DB 00195 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00196 00197 // Preparations 00198 int expectedLCID = 1; 00199 bool returnStatus; 00200 string errorMessage = ""; 00201 00202 Culture expectedCulture = new Culture(expectedLCID); 00203 returnStatus = Localisation.AddCulture(expectedCulture, ref errorMessage); 00204 if (!returnStatus) 00205 throw new Exception("Add culture error"); 00206 00207 // Test 00208 returnStatus = Localisation.DeleteCulture(expectedCulture, ref errorMessage); 00209 00210 // Checks 00211 Assert.IsTrue(returnStatus, "DeleteCulture return status:"); 00212 00213 // Check that expectedCulture does not exist in SupportedLanguages dictionary 00214 // Expected exception System.Collections.Generic.KeyNotFoundException 00215 Culture checkCulture = Localisation.SupportedLanguages[expectedCulture.Name]; 00216 00217 // Restore to previous state 00218 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00219 } 00220 [Test] 00221 public void GetAllTranslations_WithTranslated() 00222 { 00223 /*// Clear DB 00224 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00225 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00226 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00227 00228 // Preparations 00229 string errorMessage = ""; 00230 string[] expectedContexts = { "Context 1", "Context 2", "Context 3" }; 00231 string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" }; 00232 int expectedCount = expectedContexts.Length; 00233 Culture sourceCulture = Localisation.SupportedLanguages["English"]; 00234 Culture targetCulture = TestUtilities.NewTestCultureWithSave(2); 00235 string expectedTranslationResult = "Expected Translation Result"; 00236 00237 for (int i = 0; i < expectedCount; i++) 00238 // usp_GetTranslation stored procedure adds new culture and row in Translation table 00239 // if it does not find the translation and return empty recordset. 00240 // Translate method throw an exception "... can not be translated" in this case 00241 // We need to add new cultures in this test, so, ignore the exception 00242 try 00243 { 00244 Localisation.Translate(expectedContexts[i], expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name); 00245 } 00246 catch 00247 { 00248 } 00249 Context culture = Localisation.Contexts[expectedContexts[1]]; 00250 TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true); 00251 translationItems[expectedContexts[1] + " " + expectedTextToTranslate[1]].TargetText = expectedTranslationResult; 00252 Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error"); 00253 00254 // Test 00255 TranslationItems checkTranslationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, false); 00256 00257 // Checks 00258 Assert.AreEqual(expectedCount, checkTranslationItems.Count); 00259 00260 for (int i = 0; i < expectedCount; i++) 00261 Assert.AreEqual(expectedTextToTranslate[i] 00262 , checkTranslationItems[expectedContexts[i] + " " + expectedTextToTranslate[i]].SourceText); 00263 00264 // Restore to previous state 00265 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00266 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00267 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/ 00268 } 00269 [Test] 00270 public void GetAllTranslations_UntranslatedOnly() 00271 { 00272 /*// Clear DB 00273 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00274 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00275 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00276 00277 // Preparations 00278 string errorMessage = ""; 00279 string[] expectedContexts = { "Context 1", "Context 2", "Context 3" }; 00280 string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" }; 00281 int allTranslationsCount = expectedContexts.Length; 00282 int expectedCount = allTranslationsCount - 1; 00283 Culture sourceCulture = Localisation.SupportedLanguages["English"]; 00284 Culture targetCulture = TestUtilities.NewTestCultureWithSave(2); 00285 string expectedTranslationResult = "Expected Translation Result"; 00286 00287 for (int i = 0; i < allTranslationsCount; i++) 00288 // usp_GetTranslation stored procedure adds new culture and row in Translation table 00289 // if it does not find the translation and return empty recordset. 00290 // Translate method throw an exception "... can not be translated" in this case 00291 // We need to add new cultures in this test, so, ignore the exception 00292 try 00293 { 00294 Localisation.Translate(expectedContexts[i], expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name); 00295 } 00296 catch 00297 { 00298 } 00299 Context culture = Localisation.Contexts[expectedContexts[0]]; 00300 TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true); 00301 translationItems[expectedContexts[0] + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult; 00302 Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error"); 00303 00304 // Test 00305 TranslationItems checkTranslationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true); 00306 00307 // Checks 00308 Assert.AreEqual(expectedCount, checkTranslationItems.Count); 00309 00310 for (int i = 1; i < allTranslationsCount; i++) 00311 Assert.AreEqual(expectedTextToTranslate[i] 00312 , checkTranslationItems[expectedContexts[i] + " " + expectedTextToTranslate[i]].SourceText); 00313 00314 // Restore to previous state 00315 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00316 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00317 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/ 00318 } 00319 [Test] 00320 public void GetTranslationsByContext_WithTranslated() 00321 { 00322 /*// Clear DB 00323 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00324 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00325 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00326 00327 // Preparations 00328 string errorMessage = ""; 00329 string expectedContext = "Context"; 00330 string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" }; 00331 int allTranslationsCount = expectedTextToTranslate.Length; 00332 int expectedCount = allTranslationsCount; 00333 Culture sourceCulture = Localisation.SupportedLanguages["English"]; 00334 Culture targetCulture = TestUtilities.NewTestCultureWithSave(2); 00335 string expectedTranslationResult = "Expected Translation Result"; 00336 00337 for (int i = 0; i < allTranslationsCount; i++) 00338 // usp_GetTranslation stored procedure adds new culture and row in Translation table 00339 // if it does not find the translation and return empty recordset. 00340 // Translate method throw an exception "... can not be translated" in this case 00341 // We need to add new cultures in this test, so, ignore the exception 00342 try 00343 { 00344 Localisation.Translate(expectedContext, expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name); 00345 } 00346 catch 00347 { 00348 } 00349 Context culture = Localisation.Contexts[expectedContext]; 00350 TranslationItems translationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true); 00351 translationItems[expectedContext + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult; 00352 Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error"); 00353 00354 // Test 00355 TranslationItems checkTranslationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, false); 00356 00357 // Checks 00358 Assert.AreEqual(expectedCount, checkTranslationItems.Count); 00359 00360 for (int i = 1; i < allTranslationsCount; i++) 00361 Assert.AreEqual(expectedTextToTranslate[i] 00362 , checkTranslationItems[expectedContext + " " + expectedTextToTranslate[i]].SourceText); 00363 00364 // Restore to previous state 00365 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00366 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00367 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error");*/ 00368 } 00369 /*[Test] 00370 public void GetTranslationsByContext_UntranslatedOnly() 00371 { 00372 // Clear DB 00373 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00374 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00375 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00376 00377 // Preparations 00378 string errorMessage = ""; 00379 string expectedContext = "Context"; 00380 string[] expectedTextToTranslate = { "Text To Translate 1", "Text To Translate 2", "Text To Translate 3" }; 00381 int allTranslationsCount = expectedTextToTranslate.Length; 00382 int expectedCount = allTranslationsCount - 1; 00383 Culture sourceCulture = Localisation.SupportedLanguages["English"]; 00384 Culture targetCulture = TestUtilities.NewTestCultureWithSave(2); 00385 string expectedTranslationResult = "Expected Translation Result"; 00386 00387 for (int i = 0; i < allTranslationsCount; i++) 00388 // usp_GetTranslation stored procedure adds new culture and row in Translation table 00389 // if it does not find the translation and return empty recordset. 00390 // Translate method throw an exception "... can not be translated" in this case 00391 // We need to add new cultures in this test, so, ignore the exception 00392 try 00393 { 00394 Localisation.Translate(expectedContext, expectedTextToTranslate[i], sourceCulture.Name, targetCulture.Name); 00395 } 00396 catch 00397 { 00398 } 00399 Context culture = Localisation.Contexts[expectedContext]; 00400 TranslationItems translationItems = Localisation.GetAllTranslations(sourceCulture, targetCulture, true); 00401 translationItems[expectedContext + " " + expectedTextToTranslate[0]].TargetText = expectedTranslationResult; 00402 Assert.IsTrue(Localisation.SaveTranslations(translationItems, ref errorMessage), "Preparation for test - save translation error"); 00403 00404 // Test 00405 TranslationItems checkTranslationItems = Localisation.GetTranslationsByContext(culture, sourceCulture, targetCulture, true); 00406 00407 // Checks 00408 Assert.AreEqual(expectedCount, checkTranslationItems.Count); 00409 00410 for (int i = 1; i < allTranslationsCount; i++) 00411 Assert.AreEqual(expectedTextToTranslate[i] 00412 , checkTranslationItems[expectedContext + " " + expectedTextToTranslate[i]].SourceText); 00413 00414 // Restore to previous state 00415 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00416 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00417 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00418 } 00419 [Test] 00420 public void SaveTranslations() 00421 { 00422 // Clear DB 00423 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table before test error"); 00424 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table before test error"); 00425 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures before test error"); 00426 00427 // Preparations 00428 bool returnStatus; 00429 string errorMessage = ""; 00430 string expectedContext = "Context 1"; 00431 Culture sourceLanguage = Localisation.SupportedLanguages["English"]; 00432 Culture targetLanguage = TestUtilities.NewTestCultureWithSave(1); 00433 string testTranslation = "Test Translation"; 00434 string expectedTranslationResult = "Expected Translation Result"; 00435 //Add new culture 00436 try 00437 { 00438 Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name); 00439 00440 } 00441 catch 00442 { 00443 } 00444 Context culture = Localisation.Contexts[expectedContext]; 00445 TranslationItems translationItems = Localisation.GetTranslationsByContext(culture, sourceLanguage, targetLanguage, true); 00446 translationItems[expectedContext + " " + testTranslation].TargetText = expectedTranslationResult; 00447 00448 // Test 00449 returnStatus = Localisation.SaveTranslations(translationItems, ref errorMessage); 00450 00451 // Check 00452 Assert.IsTrue(returnStatus, "Save translation error"); 00453 00454 string checkTranslation = Localisation.Translate(expectedContext, testTranslation, sourceLanguage.Name, targetLanguage.Name); 00455 Assert.AreEqual(expectedTranslationResult, checkTranslation); 00456 00457 // Restore to previous state 00458 Assert.IsTrue(TestUtilities.TruncateTable("Translation"), "Clear [Translation] table after test error"); 00459 Assert.IsTrue(TestUtilities.TruncateTable("Context"), "Clear [Translation] table after test error"); 00460 Assert.IsTrue(TestUtilities.DeleteTestCultures(), "Delete cultures after test error"); 00461 }*/ 00462 #endregion 00463 } 00464 }